package com.bjsxt;

/**
 * 单例模式 - 双重检测
 * double check现在是种反模式，不推荐使用
 *
 * @author lichunlong
 */
public class SingletonDemo03 {

    /**
     * volatile避免指令重排
     */
    private static volatile SingletonDemo03 instance;

    private SingletonDemo03() {

    }

    public static SingletonDemo03 getInstance() {
        // 提高效率
        if (null == instance) {
            synchronized (SingletonDemo03.class) {
                // 安全
                if (null == instance) {
                    instance = new SingletonDemo03();
                }
            }
        }

        return instance;
    }

}